package com.suning.sawp.intf.dao;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.suning.sawp.dto.bi.BiStoreYetdSaleCountDto;
import com.suning.sawp.po.bi.BiKafkaRealTimeSale;

public interface BiKafkaRealTimeSaleDaoService {
    /**
     * 
     * 功能描述: 更新门店实时销售数据<br>
     * 〈功能详细描述〉
     *
     * @param kafkaRealTimeSale
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void upsertBiKafkaRealTimeSale(List<BiKafkaRealTimeSale> kafkaRealTimeSales);
    
    /**
     * 
     * 功能描述: 汇总门店昨日销售数据<br>
     * 〈功能详细描述〉
     *
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreYetdSaleCountDto> groupCountStoreYetdSaleData();
    
    /**
     * 
     * 功能描述: 汇总门店-品类昨日销售数据<br>
     * 〈功能详细描述〉
     *
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreYetdSaleCountDto> groupCountStoreCateYetdSaleData(String storeCode);
    
    /**
     * 
     * 功能描述: 汇总店员昨日销售数据<br>
     * 〈功能详细描述〉
     *
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<BiStoreYetdSaleCountDto> groupCountStaffYetdSaleData(String storeCode);
    
    /**
     * 
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void removeBiKafkaRealTimeSale();
    
    /**
     * 
     * 功能描述: 获取去年门店同期销售额<br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param time
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BigDecimal queryLastYearStoreSaleAmount(String storeCode, String time);
    
    /**
     * 获取去年门店同期客单价
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param time
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BigDecimal queryLastYearStoreCustAvgPrice(String storeCode, String time);
    
    /**
     * 
     * 功能描述: 获取去年同期门店品类对应销售额<br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param cateCode
     * @param time
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BigDecimal queryLastYearStoreCateSaleAmount(String storeCode, String cateCode, String time);
    
    /**
     * 获取去年同期门店品类对应销量
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param cateCode
     * @param time
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BigDecimal queryLastYearStoreCateSaleVolume(String storeCode, String cateCode, String time);
    
    /**
     * 
     * 功能描述: 批量更新门店日实时销售<br>
     * 〈功能详细描述〉
     *
     * @param saleDays
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void batchUpdateStoreRealTimeSale(List<Map<String,Object>> saleDays);
    
    /**
     * 
     * 功能描述: 批量更新门店品类日实时销售<br>
     * 〈功能详细描述〉
     *
     * @param cateSaleDays
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    void batchUpdateStoreCateRealTimeSale(List<Map<String,Object>> cateSaleDays);
    
    /**
     * 
     * 功能描述: 查询DB中今日实时数据<br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BigDecimal querySaleAmountByStoreCd(String storeCode);
    
    Map<String, Object> querySaleAmountByStoreCd4Alias(String storeCode);
    
    /**
     * 
     * 功能描述: 查询门店品类当日实时销售额<br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param cateCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    BigDecimal querySaleAmountByStoreCdCateCd(String storeCode, String cateCode);

    Map<String, Object> querySaleAmountByStoreCdCateCd4Alias(String storeCode, String cateCode);
    
    /**
     * 查询所有品类销售数据
     * 功能描述: <br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    List<Map<String, Object>> queryCatesSaleAmountByStoreCdAlias(String storeCode);

    /**
     * 
     * 功能描述: 品类今日对应去年同期数据<br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param cateCode
     * @param statisTime
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    Map<String, Object> queryLastYearSaleByStoreCdCateCd(String storeCode, String cateCode, String statisTime);
    
    /**
     * 
     * 功能描述: 查询去年门店销售数据<br>
     * 〈功能详细描述〉
     *
     * @param storeCode
     * @param time
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    Map<String, Object> queryLastYearStoreSaleData(String storeCode, String time);
	
	Map<String, Object> queryLastYearStoreSaleAmountEx(String storeCode, String nowHourMin);

    Map<String, Object> queryLastYearStoreCateSaleAmountEx(String storeCode, String cateCode, String nowHourMin);

    List<Map<String, Object>> queryLastYearStoreSaleCateList(String storeCode, String nowHourMin);
}
